package com.itguigu.glimail.seckill.scheduled;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * 1、@EnableScheduling 开启定时任务
 *       * 2. @scheduled 开启一 个定时任务
 *      *
 *      *
 *      * 1、@EnableAsync开启异步任务功能
 * 2、@Async给希望异步执行的方法上标注
 * 3.自动配置  TaskExecutionAutoConfiguration
 */


@Component
@Slf4j
public class HelloSchedule {

    /**
     * * 1、Spring中6位组成， 不允许第7位的年
     * * 2、在周几的位置，1-7代表周一到周日  MON-SUN
     * 定时任务不应该阻塞  默认是阻塞的
     * <p>
     * *1)、可以让业务运行以异步的方式，自己提交到线程池
     * CompletableFuture. runAsync(()->{
     * xxxxService.hello();
     * .},executor);
     * 2)、支持定时任务线程池;
     * 设置TaskScheduling ingPropertie(不好使)
     * 3)让定时任务异步执行
     */
    @Async
    @Scheduled(cron = "*/5 * * ? * 5")
    public void helloSchedule() throws InterruptedException {

        Thread.sleep(5000);

        log.info("定时任务");

    }
}
